package com.mmall.service.impl;

import com.google.common.collect.Lists;
import com.mmall.service.IFileService;
import com.mmall.util.FTPUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;


@Service("iFileService")
public class IFileServiceImpl implements IFileService {

    //增加一个日志文件
    private  static Logger logger = LoggerFactory.getLogger(IFileServiceImpl.class);

    //@Override
    public String upload(MultipartFile file, String path) {

        //1.获得文件名
        String filename = file.getOriginalFilename();
        //2.改成唯一uuid的文件名
        String Newfilename = UUID.randomUUID().toString()+filename.substring(filename.lastIndexOf("."));

        //3.日志文件输出内容
        logger.info("开始文件上传,旧文件名:{},上传路径:{},新文件名:{}",filename,path,Newfilename);

        //4.创建文件,在项目路径下
        File filepath = new File(path);
        //4.1判断是否存在
        if (filepath.exists()){
            //4.2允许写
            filepath.setWritable(true);
            //4.3创建他的下级文件
            filepath.mkdirs();
        }
        //5.文件路径和文件名写入到文件中
        File targetFile = new File(path, Newfilename);

        try {
            //6.文件上传成功
            file.transferTo(targetFile);

            //7.上传到ftp服务器
            FTPUtil.uploadFile(Lists.newArrayList(targetFile));

            //8.上传本地的文件
            targetFile.delete();

        } catch (IOException e) {
            logger.error("文件上传失败",e);
            return  null;
        }

        return targetFile.getName();
    }
}
